Session Initiation Protocol (SIP) is an open signaling protocol for establishing many kinds of real-time communication sessions. Examples of the types of communication sessions that may be established using SIP include voice, video, and/or instant messaging. These communication sessions may be carried out on any type of communication device such as a personal computer, laptop computer, Personal Digital Assistant (PDA), cellular phone, IM client, IP phone, traditional telephone, and so on.
One key feature of SIP is its ability to use an end-user's Address of Record (AOR) as a single unifying public address for all communications. Thus, in a world of SIP-enhanced communications, a user's AOR becomes their single address that links the user to all of the communication devices associated with the user. Using this AOR, a caller can reach any one of the user's communication devices, also referred to as User Agents (UAs) without having to know each of the unique device addresses or phone numbers.
Many call centers are equipped with SIP-enabled UAs and other resources. The desire to scale contact management devices in call center applications is ever increasing due to the increased usage of call centers to facilitate customer support and the like. Unfortunately, as more contact management devices are added to a call center the need for more intelligent load balancing algorithms greatly increases.
Current load balancing systems utilized in most call centers rely on a poll-and-response algorithm. Poll-and-response load balancing algorithms are useful but have many deficiencies. As one example, poll-and-response load balancing algorithms require the transmission of at least two messages (a poll message and a response message) to ascertain load information for candidate target devices. This increases the latency of obtaining state information at the call routing device. As another example, the accuracy of load information maintained in the call routing device is based on the polling frequency. Thus, if accurate load information is desired, the call routing device must virtually continuously poll all candidate target devices to determine accurate state information for such devices. This type of continuous polling places a burden on the call routing device and all other devices in the system. Infrequent polling results in less accurate state information for candidate target devices.